package dynamicproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class LoggingInvocationHandler implements InvocationHandler {
    private Class<?> targetClass;  // 目标类的 Class 对象

    public LoggingInvocationHandler(Class<?> targetClass) {
        this.targetClass = targetClass;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // 在方法调用前打印日志
        System.out.println("日志: 执行方法 " + method.getName() + " 参数为 " + args[0] + " 和 " + args[1]);

        // 使用反射创建目标对象实例
        Object target = targetClass.getDeclaredConstructor().newInstance();

        // 使用反射调用目标对象的方法
        return method.invoke(target, args);  // 调用目标类的方法并传递参数
    }
}